package com.aliyun.messagemgt.domain.repository;

import com.aliyun.messagemgt.dto.MessageTemplate;
import com.aliyun.messagemgt.dto.MessageTemplateParam;
import com.aliyun.messagemgt.dto.query.MessageTemplateQuery;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * @Description
 * @Author hzw
 * @Date 2020/12/16 10:57
 * @Version 1.0
 */
public interface MessageTemplateRepository {

    /**
     * 修改消息模板
     *
     * @param messageTemplate 消息模板
     * @return Integer
     */
    Integer update(MessageTemplate messageTemplate);

    /**
     * 分页查询消息模板列表
     *
     * @param query 消息模板查询条件
     * @return page
     */
    List<MessageTemplate> queryList(MessageTemplateQuery query);

    PageInfo<MessageTemplate> queryListSign(MessageTemplateQuery query);

    /**
     * 查询消息模板数量
     *
     * @return Integer
     */
    Long listCount();

    /**
     * 通过模板名称查询模板
     *
     * @param templateName 模板名称
     * @return int
     */
    Integer queryByTemplateName(MessageTemplate templateName);

    /**
     * 通过实体类查询消息模板
     *
     * @param messageTemplate 查询实体类
     * @return 消息模板
     */
    MessageTemplate queryByEntity(MessageTemplate messageTemplate);

    MessageTemplate queryByEntitySign(MessageTemplate messageTemplate);

    /**
     * 同步保存
     * @param messageTemplate
     * @return
     */
    Integer saveTemplate(MessageTemplate messageTemplate);

    /**
     * 启停用服务
     * @param messageTemplate
     * @return
     */
    Integer updateStatus(MessageTemplate messageTemplate);

    /**
     * 逻辑删除
     * @param templateParam
     * @return
     */
    Integer isDelete(MessageTemplate templateParam);

    Integer updateTemplate(MessageTemplate messageTemplateParam);

    /**
     * 查询编码
     * @param templateCode
     * @return
     */
    Integer queryByCode(MessageTemplate templateCode);

    /**
     * 根据id查询
     * @param templateId
     * @return
     */
    String queryByTemplateId(Long templateId);

    /**
     * 查询启用消息模板列表
     * @param query
     * @return
     */
    PageInfo<MessageTemplate> isEnabledList(MessageTemplateQuery query);

    /**
     * 通过标题查询消息模板是否存在
     * @param templateTitle
     * @return
     */
    Integer queryByTemplateTitle(MessageTemplate templateTitle);
}
